package xx.observer.design;

/**
 * @Classname Example
 * @Description TODO
 * @Date 2023/7/25 14:37
 * @Created by wangxianlin
 */
public class Example {
    public static void main(String[] args) {
        // 创建主题和观察者
        ConcreteSubject subject = new ConcreteSubject();
        Observer observer1 = new ConcreteObserver();
        Observer observer2 = new ConcreteObserver();

        // 注册观察者
        subject.attach(observer1);
        subject.attach(observer2);

        // 改变主题状态，观察者将收到通知并更新自己的状态
        subject.setState(1);
        subject.setState(2);

        // 注销观察者
        subject.detach(observer2);

        // 再次改变主题状态，此时只有 observer1 收到通知
        subject.setState(3);
    }
}
